# 将npy 中的nan 值替换为 9
import numpy as np 


def replace_nan_in_segment(file_path, replace_value=9, save_changes=True):
    """
    将 segment.npy 中的 NaN 值替换为指定值
    
    参数:
        file_path: segment.npy 文件路径
        replace_value: 要替换的值 (默认为9)
        save_changes: 是否保存修改 (默认为True)
    
    返回:
        处理后的数组
    """
    segment = np.load(file_path)
    
    nan_count = np.sum(np.isnan(segment))
    if nan_count > 0:
        print(f"发现 {nan_count} 个 NaN 值，替换为 {replace_value}...")
        segment = np.where(np.isnan(segment), replace_value, segment)
        
        if save_changes:
            np.save(file_path, segment)
            print("修改已保存。")
    else:
        print("没有发现 NaN 值。")
    
    return segment

# 使用示例
processed_segment = replace_nan_in_segment(
    'E:\\data\\3DpointCloud\\松霖人脸数据\\face_seg_clean\\1006_1381912792830971904-17495152859693Dresult3Dface_result\\segment.npy', 
    replace_value=9)